home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / source / graphicgems4.lha / GemsIV / arcball / Ball.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-06  |  1.1 KB  |  40 lines

  1. /***** Ball.h *****/
  2. #ifndef _H_Ball
  3. #define _H_Ball
  4. #include "BallAux.h"
  5.  
  6. typedef enum AxisSet{NoAxes, CameraAxes, BodyAxes, OtherAxes, NSets} AxisSet;
  7. typedef float *ConstraintSet;
  8. typedef struct {
  9.     HVect center;
  10.     double radius;
  11.     Quat qNow, qDown, qDrag;
  12.     HVect vNow, vDown, vFrom, vTo, vrFrom, vrTo;
  13.     HMatrix mNow, mDown;
  14.     Bool showResult, dragging;
  15.     ConstraintSet sets[NSets];
  16.     int setSizes[NSets];
  17.     AxisSet axisSet;
  18.     int axisIndex;
  19. } BallData;
  20.  
  21. /* Public routines */
  22. void Ball_Init(BallData *ball);
  23. void Ball_Place(BallData *ball, HVect center, double radius);
  24. void Ball_Mouse(BallData *ball, HVect vNow);
  25. void Ball_UseSet(BallData *ball, AxisSet axisSet);
  26. void Ball_ShowResult(BallData *ball);
  27. void Ball_HideResult(BallData *ball);
  28. void Ball_Update(BallData *ball);
  29. void Ball_Value(BallData *ball, HMatrix mNow);
  30. void Ball_BeginDrag(BallData *ball);
  31. void Ball_EndDrag(BallData *ball);
  32. void Ball_Draw(BallData *ball);
  33. /* Private routines */
  34. void DrawAnyArc(HVect vFrom, HVect vTo);
  35. void DrawHalfArc(HVect n);
  36. void Ball_DrawConstraints(BallData *ball);
  37. void Ball_DrawDragArc(BallData *ball);
  38. void Ball_DrawResultArc(BallData *ball);
  39. #endif
  40.